﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using QuanLyThuVien.DAL;
using QuanLyThuVien.DTO;

namespace QuanLyThuVien.BLL
{
    //----------------------------------------------------------------------
    //Desc: class xử lý cho bảng CUONSACH
    //----------------------------------------------------------------------
    public class BLLCuonSach
    {
        //----------------------------------------------------------------------
        //Desc: constructor mặc định
        //----------------------------------------------------------------------
        public BLLCuonSach()
        { }

        //----------------------------------------------------------------------
        //Desc: lấy thông tin cuốn sách
        //----------------------------------------------------------------------
        public DTOCuonSach LayThongTinCuonSach(string macuonsach)
        {
            DALCuonSach _dalCuonSach = new DALCuonSach();
            return _dalCuonSach.LayThongTinCuonSach(macuonsach);
        }

        //----------------------------------------------------------------------
        //Desc: lấy tên đầu sách
        //----------------------------------------------------------------------
        public string LayTenDauSach(string macuonsach)
        {
            DALCuonSach _dalCuonSach = new DALCuonSach();
            return _dalCuonSach.LayTenDauSach(macuonsach);
        }

        //----------------------------------------------------------------------
        //Desc: lấy mã thể loại
        //----------------------------------------------------------------------
        public string LayMaTL(string macuonsach)
        {
            DALCuonSach _dalCuonSach = new DALCuonSach();
            return _dalCuonSach.LayMaTL(macuonsach);
        }

        //----------------------------------------------------------------------
        //Desc: lấy tên thể loại
        //----------------------------------------------------------------------
        public string LayTenTL(string macuonsach)
        {
            DALCuonSach _dalCuonSach = new DALCuonSach();
            return _dalCuonSach.LayTenTL(macuonsach);
        }

        //----------------------------------------------------------------------
        //Desc: lấy danh sách tác giả
        //----------------------------------------------------------------------
        public List<DTOTacGia> LayDSTacGia(string macuonsach)
        {
            DALCuonSach _dalCuonSach = new DALCuonSach();
            return _dalCuonSach.LayDSTacGia(macuonsach);
        }

        //----------------------------------------------------------------------
        //Desc: cập nhật cuốn sách
        //----------------------------------------------------------------------
        public bool CapNhat(DTOCuonSach cuonsach)
        {
            DALCuonSach _dalCuonSach = new DALCuonSach();
            return _dalCuonSach.CapNhat(cuonsach);
        }

        //----------------------------------------------------------------------
        //Desc: phát sinh mã cuốn sách
        //----------------------------------------------------------------------
        public bool PhatSinhMaCuonSach(ref DTOCuonSach cuonsach)
        {
            DALCuonSach _dalCuonSach = new DALCuonSach();
            int stt = _dalCuonSach.DemCuonSach(cuonsach.MaSach);
            if (stt < 0)
                return false;
            if (stt == 0)
                stt++;
            string macuonsach = cuonsach.MaSach + stt.ToString("D3");
            int dem = _dalCuonSach.DemMaCuonSach(macuonsach);
            while (dem > 0)
            {
                stt++;
                macuonsach = cuonsach.MaSach + stt.ToString("D3");
                dem = _dalCuonSach.DemMaCuonSach(macuonsach);
            }

            if (dem < 0)
                return false;

            cuonsach.MaCuonSach = macuonsach;
            return true;
        }

        //----------------------------------------------------------------------
        //Desc: đếm số cuốn sách có cùng mã sách đang được mượn
        //----------------------------------------------------------------------
        public int DemSoCuonSachDangMuon(string masach)
        {
            DALCuonSach _dalCuonSach = new DALCuonSach();
            return _dalCuonSach.DemSoCuonSachDangMuon(masach);
        }

        //----------------------------------------------------------------------
        //Desc: cập nhật tình trạng cuốn sách
        //----------------------------------------------------------------------
        public bool CapNhatTinhTrang(string macuonsach, bool tinhtrang)
        {
            DALCuonSach _dalCuonSach = new DALCuonSach();
            return _dalCuonSach.CapNhatTinhTrang(macuonsach, tinhtrang);
        }
    }
}
